package com.eric.binary;

/**
 * @author chenw-i
 * @version 1.0.0
 * @ClassName BinaryTree.java
 * @Description TODO
 * @createTime 2021年04月29日 15:18:00
 */
public class BinaryTree {

    /**
     * 每次旋转保持根节点的更新
     */
    private Node root;

    /**
     * 旋转一次使得左边的节点变成新的根节点
     * 也就右旋转
     */
    public void l_rotate(Node node){
        Node parent = node.getParent();
        Node l = node.getLeft();
        node.setLeft(l.getRight());
        l.setRight(node);

        l.setParent(parent);
    }

    /**
     * 旋转一次使得右边的节点变成新的根节点
     * 也就左旋转
     */
    public void r_rotate(Node node){
        Node parent = node.getParent();

        Node r = node.getRight();
        node.setRight(r.getLeft());
        r.setLeft(node);

        r.setParent(parent);
    }

    /**
     * 旋转两次使得 左子节点的由节点作为跟节点
     * 即 左节点先做一次左旋转，然后根节点再右旋转一次
     * @param node
     */
    public void lr_rotate(Node node){

    }

    /**
     * 旋转两次使得 右边子节点的左节点作为根节点
     * 即先右节点的先做一次有旋转，然后根节点再左旋转一次
     * @param node
     */
    public void rl_rotate(Node node){

    }
}
